#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class A
{
public:
    A(const int &i) : index(i){};
    int index = 0;
};



int main(int argc, char *argv[])
{
    A a1(3), a2(5), a3(9);
    //（1）第15行：使用了初始化列表来初始化对象。
    vector<A> avec{a1, a2, a3};
    //（2）第16行：使用了lambda表达式来比较元素大小，其中const A &a1, const A &a2是参数列表，return a1.index < a2.index;
    // 是函数体，返回值是布尔型的大小比较结果。
    std::sort(avec.begin(), avec.end(), [](const A &a1, const A &a2)
              { return a1.index < a2.index; });

    // （3）第17行：用auto关键字实现了自动类型推导。auto的自动类型推导，用于从初始化表达式中推断出变量的数据类型。
    // （4）第17行：使用了序列 for循环，可以用于遍历数组，容器，string以及由begin和end函数定义的序列。 
    for (auto &a : avec) cout << a.index << " ";
    cout << endl;
    return 0;
}
